今天,我們來學位元運算子以及賦值運算子吧!
位元運算子作用於位元,並逐位執行。"&"、"|"、"^"真值表如下:
| A | B | A&B | A|B | A^B | 
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 
| 0 | 1 | 0 | 1 | 1 | 
| 1 | 0 | 0 | 1 | 1 | 
| 1 | 1 | 1 | 1 | 0 | 
簡單介紹一"&"、"|"、"^"這三個運算子:
&": 一定要都是 1,輸出才為 1。(似數位邏輯裡的 and 閘)|": 任一為 1,輸出就為 1。(似數位邏輯裡的 or 閘)^": 相同為 0,不同為 1。(似數位邏輯裡的 xor 閘)再舉個例子:
如果今天有個變數 A=60,變數 B=13,以二進位表示:A= 00111100  B= 00001101
接下來我們做位元運算:
而 C 所支援的位元運算還加上"~"、"<<"、">>":
~" : 取反運算子,(~ A) 會得到 61,即 11000011,一個有符號二進位補數形式。<<" : 二進位左移運算子,將一個數的各二進位全部左移若干位(左邊的二進位丟棄,右邊補 0) ex. A<<2,會等於 240,因為本來 A= 00111100,往左移位一次等於 01111000,再移一次等於 11110000,就會等於 240。>>" : 二進制右移運算子。將一個數的各二進位全部右移若干位,正數左補 0,負數左補 1,右邊丟棄。ex. A>>2,會等於 15,因為本來 A= 00111100,往右移一位會等於 00011110 再往右移一位會等於 00001111,就會等於 15。以上參考
ITREAD01 - 位運算子
上面舉例的,寫成程式會長這樣:
#include<stdio.h>
int main(){
	int A = 60, B = 13 ;
	printf("A&B=%d\n", A&B); 
	printf("A|B=%d\n", A|B); 
	printf("A^B=%d\n", A^B);
	printf("~A=%d\n", ~A);  
	printf("A<<2=%d\n", A<<2);
	printf("A>>2=%d", A>>2);
	return 0; 
}
這是輸出結果:
會發現,程式輸出結果與剛剛舉例推算出的結果是一樣的~
明天,來介紹運算子部分的最後一個小單元 : 賦值運算子!!